package com.yougou.ui.register;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import com.yougou.base.BaseViewModel;
import com.yougou.data.model.User;
import com.yougou.utils.UserDataManager;
import com.yougou.utils.UserManager;

import java.util.regex.Pattern;

public class RegisterViewModel extends BaseViewModel {
    
    private MutableLiveData<User> registerResult = new MutableLiveData<>();
    private MutableLiveData<String> error = new MutableLiveData<>();
    
    public LiveData<User> getRegisterResult() {
        return registerResult;
    }
    
    public LiveData<String> getError() {
        return error;
    }
    
    
    public void register(String username, String phone, String password, String confirmPassword) {
        // 验证用户名
        if (username == null || username.trim().isEmpty()) {
            error.setValue("请输入用户名");
            return;
        }
        
        if (username.length() < 3 || username.length() > 20) {
            error.setValue("用户名长度应为3-20个字符");
            return;
        }
        
        // 验证手机号
        if (phone == null || phone.trim().isEmpty()) {
            error.setValue("请输入手机号");
            return;
        }
        
        if (!isValidPhone(phone)) {
            error.setValue("请输入正确的手机号");
            return;
        }
        
        // 验证密码
        if (password == null || password.trim().isEmpty()) {
            error.setValue("请输入密码");
            return;
        }
        
        if (password.length() < 6 || password.length() > 20) {
            error.setValue("密码长度应为6-20个字符");
            return;
        }
        
        // 验证确认密码
        if (!password.equals(confirmPassword)) {
            error.setValue("两次输入的密码不一致");
            return;
        }
        
        // 检查用户名是否已存在
        if (UserDataManager.isUsernameTaken(username, "")) {
            error.setValue("用户名已存在");
            return;
        }
        
        // 检查手机号是否已存在
        if (UserDataManager.isPhoneTaken(phone, "")) {
            error.setValue("手机号已被注册");
            return;
        }
        
        // 注册用户
        boolean success = UserDataManager.registerUser(username, phone, password);
        if (!success) {
            error.setValue("注册失败，请重试");
            return;
        }
        
        // 注册成功后自动登录
        User user = UserDataManager.validateLogin(username, password);
        if (user != null) {
            // 保存登录状态
            UserManager.login(user);
            registerResult.setValue(user);
        } else {
            error.setValue("注册失败，请重试");
        }
    }
    
    
    private boolean isValidPhone(String phone) {
        String regex = "^1[3-9]\\d{9}$";
        return Pattern.matches(regex, phone);
    }
}

